Type inference in typescript